Common:
  - implement svn diff --git support into gen_branch_workingset.bat/sync_branch_workingsset.bat, tests
  - scm/svn/* tests
  - tests for index_patch_file.bat on patch with "Index: ", "@@ " and "GIT binary patch" sequences not in the beginning of lines

Tests for autodetect (-ad) in svn_gen_branch_workingset.bat:
  - in WC directory w/o .svn subdirectory, but w/ .svn subdirectory in parent directory
  - in WC directory w/o .svn subdirectory, but w/ .svn subdirectory in child directory
  - in local repo (file:///) directory
  - in directory not under SVN control (w/o autodetect, and with autodetect but w/o .svn subdirectory inside parent/child directories)

Tests for svn_sync_branch_workingset.bat:
  - sync directories between revisions where a directory was an external and removed from externals
  - sync directories between revisions where a directory was an external and became internal and vice versa
  - sync directories where an external directory removed between revisions but having local changes. Script must stop with an error if the auto revert flag is not set
  - sync w/ the fresh checkout flag and w/o must gain equal results if no collisions
  - sync with in-a-repository relocation should not leave directories with the S suffix (switched) in the svnversion output
  - sync w/ binary files add/remove/change
  - sync w/ tree changes (gen must be implemented with "svn diff --git" support)
  - sync w/o any flags
  - sync w/ an external has local changes but must be removed
  - sync external with URL relocation, where patch from the gen contains URL changes
  - sync and break in middle of parent wc.db update, where EXTERNALS tabdle processed for insert/update/delete
  - sync with local changes in nested externals with the -ignore_nested_externals_local_changes flag set

Test for svn_remove_externals.bat/svn_remove_external.bat/svn_remove_external_dir.bat:
  - sync where content of the external directory already partially removed
  - sync where the external directory does not have .svn subdirectory
  - sync where path to an external directory half removed (for example, dir1/dir2/ext does not exist, but dir1/dir2 is the external path)

Tests for svn_changeset.bat:
  - in WC directory w/o .svn subdirectory, but w/ .svn subdirectory in parent directory
  - in local repo (file:///) directory
  - in directory not under SVN control

Tests for svn_list.bat:
  - in WC directory w/o .svn subdirectory, but w/ .svn subdirectory in parent directory
  - output from the script on SVN WC directory w/o .svn subdirectory, but w/ .svn subdirectory in parent directory w/ flags -offline -wcroot flags should be the same to the output w/o -offline flag and w/ --depth infinity --non-interactive flags
  - in local repo (file:///) directory
  - in directory not under SVN control

Add:
  - svn_rebase.bat script as addition to the svn relocate command. This will be offline command with direct access to the wc.db sqlite database file to change the repos_path by base path mask to new base path.

Specific test cases:
  1. rename with addition:
    1. rename versioned files1.txt to file1_2.txt
    2. create/copy new file file1.txt with different content
    3. file1.txt add to svn
    3. commit

    Result: the file file1.txt should not be left uncommitted

  2. SVN repo structure:
    /EXT/A
    /EXT/B

    /ROOT
    /ROOT/V/B

    WC structure of externals in the directory X:
    A -> /ROOT
    B -> /ROOT/V/B

    The operations set to test:
    1. move content of the /ROOT into /ROOT/A
    2. move and rename directory /ROOT/A/V/B to /ROOT/B
    3. change external A from /ROOT to /ROOT/A for the directory X
    4. change external B from /ROOT/V/B to /ROOT/B for the directory X
    5. rename or remove the /X/B directory (created by external update)
    4. remove directory /ROOT/A/V as left behind empty after svn move and rename
    5. Commit changes as revision Z
    6. update to the head
    7. update to the Z-1 revision
    8. update to the head again

    The SVN repo structure in the revision Z:
    /EXT/A
    /EXT/B

    /ROOT/A
    /ROOT/B

    WC structure of externals in the directory X:
    A -> /ROOT/A
    B -> /ROOT/B

    Result: The WC versioned directory structure in revion Z must be the same as in the revision Z-1, except the /X/B is taken externally w/o intermediate path A/V
